package net.oschina.android.util;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.text.TextUtils;

/**
 * @author HuangWenwei
 *
 * @date 2014年8月25日
 */
public class NetWorkUtil {
	
	/*
	 * 网络连接类型
	 */
	public static final int NETTYPE_WIFI = 0x01;
	public static final int NETTYPE_CMWAP = 0x02;
	public static final int NETTYPE_CMNET = 0x03;
	
	/**
	 * 判断网络是否连接
	 *2014年8月25日
	 *@param context 访问ConnectivityManager类的上下文
	 *@return 如果设备已经连接上网络，则返回true
	 */
	public static boolean isConntedToNetWork(Context context){
		boolean conntected = false;
		ConnectivityManager cm = (ConnectivityManager) 
				context.getSystemService(Context.CONNECTIVITY_SERVICE);
		if(cm!=null){
			NetworkInfo ni = cm.getActiveNetworkInfo();
			if(ni!=null)
				conntected = ni.isConnected();
		}
		return conntected;
	}
	
	/**
	 * 获取网络连接类型
	 *2014年8月25日
	 *@param context
	 *@return
	 */
	public static int getNetworkType(Context context){
		int netType = 0;
		ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
		if(networkInfo == null || !isConntedToNetWork(context))
			return netType;
		int nType = networkInfo.getType();
		if(nType == ConnectivityManager.TYPE_MOBILE){
			String extraInfo = networkInfo.getExtraInfo();
			if(!TextUtils.isEmpty(extraInfo)){
				if(extraInfo.toLowerCase().equals("cmnet"))
					netType = NETTYPE_CMNET;
				else
					netType = NETTYPE_CMWAP;
			}else if(nType == ConnectivityManager.TYPE_WIFI)
				netType = NETTYPE_WIFI;
		}
		return netType;
	}

}
